<script>
import {ref} from "vue";
import {cancelReason} from "@/api/constants";
import message from "@/components/library/message";
import {cancelOrder} from "@/api/order";

export default {
  name: "OrderCancel",
  setup() {
    const visibleDialog = ref(false)
    //   打开对话框，提供给其他组件调用
    const order = ref(null)
    const currText = ref('')
    const open = (item) => {
      visibleDialog.value = true
      order.value = item
      currText.value = ''
    }

    const submit = () => {
      if (!currText.value) return message({text: '请选择取消订单的原因'})
      cancelOrder(order.value.id, currText.value).then(() => {
        message({text: '取消订单成功', type: 'success'})
        order.value.orderState = 6
        visibleDialog.value = false
      })
    }

    return {
      visibleDialog,
      submit,
      cancelReason,
      currText,
      open
    }
  }
}
</script>

<template>
  <XtxDialog title="取消订单" v-model="visibleDialog">
    <!-- 组件内容 -->
    <div class="cancel-info">
      <p>取消订单后，本单享有的优惠可能会一并取消，是否继续？</p>
      <p class="tip">请选择取消订单的原因（必选）：</p>
      <div class="btn">
        <a
            @click="currText = item"
            v-for="item in cancelReason"
            :key="item"
            href="javascript:;"
            :class="{ active: currText === item }"
        >
          {{ item }}
        </a>
      </div>
    </div>
    <!-- 按钮操作 -->
    <template #footer>
      <XtxButton type="gray" @click="visibleDialog=false" style="margin-right:20px">取消</XtxButton>
      <XtxButton type="primary" @click="submit">确认</XtxButton>
    </template>
  </XtxDialog>
</template>

<style scoped lang="less">
:deep(.xtx-dialog) .wrapper {
  width: 620px;
}

.cancel-info {
  p {
    font-size: 16px;
    line-height: 35px;

    &.tip {
      color: #999;
    }
  }

  .btn {
    padding-top: 21px;
    display: flex;
    flex-wrap: wrap;

    a {
      width: 256px;
      height: 45px;
      line-height: 45px;
      text-align: center;
      background-color: #ffffff;
      border: 1px solid #e4e4e4;
      margin-right: 20px;
      margin-bottom: 20px;
      color: #666;

      &:nth-child(2n) {
        margin-right: 0;
      }

      &:hover, &.active {
        background-color: #e3f9f4;
        border-color: @xtxColor;
      }
    }
  }
}
</style>